package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.DefaultListModel;

import ventanas.VentanaListaReposicionDeInsumos;
import beans.Compra;
import beans.ItemOrdenCompra;
import beans.OrdenCompra;
import beans.Producto;
import beans.Proveedor;
import cliente.ClienteAdminCentral;


public class ControladorListaReposicionDeInsumos implements ActionListener{

	private VentanaListaReposicionDeInsumos ventana;
	private OrdenCompra oc;
	private Proveedor prove;
	
	public ControladorListaReposicionDeInsumos (VentanaListaReposicionDeInsumos ventana, OrdenCompra oc )
	{
		this.ventana = ventana;
		this.oc = oc;
	}

	@Override
	public void actionPerformed( ActionEvent ae ) 
	{
		if ( prove == null )
		{
			prove = new Proveedor();
		}
		if ( ventana.getBtnCargarListaReposicion() == ae.getSource() )
		{
			ventana.cargarListas();
		}
		
		if ( ae.getSource() == ventana.getBtnIda() )
		{
			
			DefaultListModel<Compra> modeloProds = (DefaultListModel<Compra>) ventana.getListaProductos().getModel();
			DefaultListModel<Compra> modeloProdsAComprar = (DefaultListModel<Compra>) ventana.getListaProductosAComprar().getModel();
			Compra seleccionada = ventana.getListaProductos().getSelectedValue();
					
			if( !modeloProdsAComprar.contains( seleccionada ) )
			{
				modeloProdsAComprar.addElement(seleccionada);
				modeloProds.removeElement(seleccionada);
			}
			ventana.getListaProductos().setModel(modeloProds);
			ventana.actualizarListas();
		}
		
		if ( ae.getSource() == ventana.getBtnVuelta() )
		{
			DefaultListModel<Compra> modeloProds = (DefaultListModel<Compra>) ventana.getListaProductos().getModel();
			DefaultListModel<Compra> modeloProdsAComprar = (DefaultListModel<Compra>) ventana.getListaProductosAComprar().getModel();
			Compra seleccionada = ventana.getListaProductosAComprar().getSelectedValue();
			
			if( !modeloProds.contains ( seleccionada ) )
			{
				modeloProds.addElement(seleccionada);
				modeloProdsAComprar.removeElement(seleccionada);
			}
			ventana.actualizarListas();
		}
		
		if ( ae.getSource() == ventana.getBtnAceptar() )
		{
			DefaultListModel<Compra> modeloProdsAComprar = (DefaultListModel<Compra>) ventana.getListaProductosAComprar().getModel();
			List<Compra> compras = new ArrayList<Compra>();
			
			for (int i=0; i < modeloProdsAComprar.getSize(); i++ )
			{
				compras.add( modeloProdsAComprar.get(i) );
			}
			
			if ( oc != null )
			{
				for (Compra c : compras )
				{
						ItemOrdenCompra ioc = new ItemOrdenCompra();
						ioc.setProducto(c.getProductoAComprar());
						ioc.setCantidad(c.getCantidadAComprar());
						oc.agregarItem(ioc);
				}
			}
			ventana.dispose();
		}
		
		if (ae.getSource() == ventana.getBtnCancelar() )
		{
			ventana.dispose();
		}
		
	}

}
